{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"pytorch_playground.ipynb","version":"0.3.2","provenance":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"accelerator":"GPU"},"cells":[{"metadata":{"id":"hDu16F1Kxb5X","colab_type":"code","outputId":"75a168a4-f753-40e7-df74-582911eaee13","executionInfo":{"status":"ok","timestamp":1551855320655,"user_tz":-180,"elapsed":181450,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":239}},"cell_type":"code","source":["!apt-get install -y -qq software-properties-common python-software-properties module-init-tools\n","!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null\n","!apt-get update -qq 2>&1 > /dev/null\n","!apt-get -y install -qq google-drive-ocamlfuse fuse\n","from google.colab import auth\n","auth.authenticate_user()\n","from oauth2client.client import GoogleCredentials\n","creds = GoogleCredentials.get_application_default()\n","import getpass\n","!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL\n","vcode = getpass.getpass()\n","!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}"],"execution_count":0,"outputs":[{"output_type":"stream","text":["E: Package 'python-software-properties' has no installation candidate\n","Selecting previously unselected package google-drive-ocamlfuse.\n","(Reading database ... 131322 files and directories currently installed.)\n","Preparing to unpack .../google-drive-ocamlfuse_0.7.1-0ubuntu3~ubuntu18.04.1_amd64.deb ...\n","Unpacking google-drive-ocamlfuse (0.7.1-0ubuntu3~ubuntu18.04.1) ...\n","Setting up google-drive-ocamlfuse (0.7.1-0ubuntu3~ubuntu18.04.1) ...\n","Processing triggers for man-db (2.8.3-2ubuntu0.1) ...\n","Please, open the following URL in a web browser: https://accounts.google.com/o/oauth2/auth?client_id=32555940559.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&response_type=code&access_type=offline&approval_prompt=force\n","··········\n","Please, open the following URL in a web browser: https://accounts.google.com/o/oauth2/auth?client_id=32555940559.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&response_type=code&access_type=offline&approval_prompt=force\n","Please enter the verification code: Access token retrieved correctly.\n"],"name":"stdout"}]},{"metadata":{"id":"Qdy3wdtnySL7","colab_type":"code","colab":{}},"cell_type":"code","source":["!mkdir -p drive"],"execution_count":0,"outputs":[]},{"metadata":{"id":"EMCGWoeqyVql","colab_type":"code","outputId":"60354800-2e89-4b2a-975d-f622030548dc","executionInfo":{"status":"ok","timestamp":1551855368209,"user_tz":-180,"elapsed":3351,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":54}},"cell_type":"code","source":["!google-drive-ocamlfuse drive"],"execution_count":0,"outputs":[{"output_type":"stream","text":["fuse: mountpoint is not empty\n","fuse: if you are sure this is safe, use the 'nonempty' mount option\n"],"name":"stdout"}]},{"metadata":{"id":"vVsW8wzdyc7f","colab_type":"code","colab":{}},"cell_type":"code","source":["!ls drive"],"execution_count":0,"outputs":[]},{"metadata":{"id":"TZonHTTKygut","colab_type":"code","outputId":"8ba0ffec-165e-44af-c572-a19f7bc7c145","executionInfo":{"status":"ok","timestamp":1551855399395,"user_tz":-180,"elapsed":7653,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":219}},"cell_type":"code","source":["!pip install keras\n","!pip install h5py"],"execution_count":0,"outputs":[{"output_type":"stream","text":["Requirement already satisfied: keras in /usr/local/lib/python3.6/dist-packages (2.2.4)\n","Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.6/dist-packages (from keras) (1.11.0)\n","Requirement already satisfied: pyyaml in /usr/local/lib/python3.6/dist-packages (from keras) (3.13)\n","Requirement already satisfied: h5py in /usr/local/lib/python3.6/dist-packages (from keras) (2.8.0)\n","Requirement already satisfied: scipy>=0.14 in /usr/local/lib/python3.6/dist-packages (from keras) (1.1.0)\n","Requirement already satisfied: keras-preprocessing>=1.0.5 in /usr/local/lib/python3.6/dist-packages (from keras) (1.0.9)\n","Requirement already satisfied: keras-applications>=1.0.6 in /usr/local/lib/python3.6/dist-packages (from keras) (1.0.7)\n","Requirement already satisfied: numpy>=1.9.1 in /usr/local/lib/python3.6/dist-packages (from keras) (1.14.6)\n","Requirement already satisfied: h5py in /usr/local/lib/python3.6/dist-packages (2.8.0)\n","Requirement already satisfied: numpy>=1.7 in /usr/local/lib/python3.6/dist-packages (from h5py) (1.14.6)\n","Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from h5py) (1.11.0)\n"],"name":"stdout"}]},{"metadata":{"id":"6QcVGrTkymoV","colab_type":"code","outputId":"61eb876f-7593-4297-b908-6094a0b26cae","executionInfo":{"status":"ok","timestamp":1551855430449,"user_tz":-180,"elapsed":3944,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":127}},"cell_type":"code","source":["!pip install torch torchvision"],"execution_count":0,"outputs":[{"output_type":"stream","text":["Requirement already satisfied: torch in /usr/local/lib/python3.6/dist-packages (1.0.1.post2)\n","Requirement already satisfied: torchvision in /usr/local/lib/python3.6/dist-packages (0.2.2.post3)\n","Requirement already satisfied: pillow>=4.1.1 in /usr/local/lib/python3.6/dist-packages (from torchvision) (4.1.1)\n","Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from torchvision) (1.11.0)\n","Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from torchvision) (1.14.6)\n","Requirement already satisfied: olefile in /usr/local/lib/python3.6/dist-packages (from pillow>=4.1.1->torchvision) (0.46)\n"],"name":"stdout"}]},{"metadata":{"id":"3iaR5JOrypsY","colab_type":"code","colab":{}},"cell_type":"code","source":["import torch\n","import torchvision\n"],"execution_count":0,"outputs":[]},{"metadata":{"id":"69KEYYiny6dW","colab_type":"code","outputId":"1eb8d580-f666-498d-f5e5-93b263119481","executionInfo":{"status":"ok","timestamp":1551887901837,"user_tz":-180,"elapsed":678,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":35}},"cell_type":"code","source":["torch.cuda.is_available()"],"execution_count":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":["True"]},"metadata":{"tags":[]},"execution_count":3}]},{"metadata":{"id":"oD5ZbMlj1pqd","colab_type":"code","outputId":"225ed38b-5111-4a7c-fac9-73c5aa7a4c20","executionInfo":{"status":"ok","timestamp":1551856237977,"user_tz":-180,"elapsed":859,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":35}},"cell_type":"code","source":["print(torch.tensor([2,2,1]))"],"execution_count":0,"outputs":[{"output_type":"stream","text":["tensor([2, 2, 1])\n"],"name":"stdout"}]},{"metadata":{"id":"8zOpwe401vjM","colab_type":"code","outputId":"c622c11d-4a88-4b84-fa6b-a22ab2d47686","executionInfo":{"status":"ok","timestamp":1551856313179,"user_tz":-180,"elapsed":810,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":90}},"cell_type":"code","source":["a=torch.tensor([2,2,1])\n","b=torch.tensor([[2,1,2,3],[2,3,6,7],[3,4,7,8]])\n","print(a)\n","print(b)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["tensor([2, 2, 1])\n","tensor([[2, 1, 2, 3],\n","        [2, 3, 6, 7],\n","        [3, 4, 7, 8]])\n"],"name":"stdout"}]},{"metadata":{"id":"RyadUCMA2B5u","colab_type":"code","outputId":"d7fe54e2-af1e-4d8d-83a5-c8a3a46a26b3","executionInfo":{"status":"ok","timestamp":1551856337328,"user_tz":-180,"elapsed":812,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":54}},"cell_type":"code","source":["print(a.shape)\n","print(b.shape)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["torch.Size([3])\n","torch.Size([3, 4])\n"],"name":"stdout"}]},{"metadata":{"id":"TDPCy9X32Hyh","colab_type":"code","outputId":"ef3eb7f5-2656-4130-faed-a7f431b9d1d9","executionInfo":{"status":"ok","timestamp":1551856383862,"user_tz":-180,"elapsed":862,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":35}},"cell_type":"code","source":["print(b.view(1,-1))"],"execution_count":0,"outputs":[{"output_type":"stream","text":["tensor([[2, 1, 2, 3, 2, 3, 6, 7, 3, 4, 7, 8]])\n"],"name":"stdout"}]},{"metadata":{"id":"bwM2ousb2TG2","colab_type":"code","outputId":"74542341-66fa-4c8a-a9ac-02f2550a469a","executionInfo":{"status":"ok","timestamp":1551856402663,"user_tz":-180,"elapsed":1779,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":72}},"cell_type":"code","source":["print(b)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["tensor([[2, 1, 2, 3],\n","        [2, 3, 6, 7],\n","        [3, 4, 7, 8]])\n"],"name":"stdout"}]},{"metadata":{"id":"dOQ0C4Nt2Xe0","colab_type":"code","outputId":"8b33e66f-c409-4871-ebce-e08e9ede7d95","executionInfo":{"status":"ok","timestamp":1551856430144,"user_tz":-180,"elapsed":877,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":237}},"cell_type":"code","source":["b=b.view(-1,1)\n","print(b)\n","b=b.view(1,-1)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["tensor([[2],\n","        [1],\n","        [2],\n","        [3],\n","        [2],\n","        [3],\n","        [6],\n","        [7],\n","        [3],\n","        [4],\n","        [7],\n","        [8]])\n"],"name":"stdout"}]},{"metadata":{"id":"OXYHA3tL2ebA","colab_type":"code","outputId":"ec3bda18-0d45-43f2-cdc8-99a32f4c74c6","executionInfo":{"status":"ok","timestamp":1551856442102,"user_tz":-180,"elapsed":816,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":35}},"cell_type":"code","source":["print(b)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["tensor([[2, 1, 2, 3, 2, 3, 6, 7, 3, 4, 7, 8]])\n"],"name":"stdout"}]},{"metadata":{"id":"7yvY9Zwq2hXM","colab_type":"code","outputId":"5d0f6d30-cfd8-4a7d-fab3-4b6834c3048c","executionInfo":{"status":"ok","timestamp":1551856489269,"user_tz":-180,"elapsed":842,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":164}},"cell_type":"code","source":["r=torch.rand(4,4)\n","print(r)\n","rn=torch.rand(4,4)\n","print(rn)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["tensor([[0.1403, 0.3465, 0.0569, 0.1078],\n","        [0.4665, 0.3474, 0.0684, 0.1022],\n","        [0.3918, 0.0163, 0.9881, 0.6755],\n","        [0.6768, 0.8625, 0.1836, 0.3245]])\n","tensor([[0.7734, 0.8327, 0.4467, 0.4827],\n","        [0.3478, 0.9291, 0.9286, 0.2057],\n","        [0.5622, 0.9592, 0.2872, 0.1908],\n","        [0.3665, 0.4398, 0.6534, 0.3940]])\n"],"name":"stdout"}]},{"metadata":{"id":"pPDkwNpC2s4v","colab_type":"code","outputId":"7a78705b-c828-4b39-fd0c-42eb75c16446","executionInfo":{"status":"ok","timestamp":1551856513810,"user_tz":-180,"elapsed":966,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":90}},"cell_type":"code","source":["rn=torch.randn(4,4)\n","print(rn)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["tensor([[-1.1084, -0.1175,  1.2292, -2.0593],\n","        [ 0.5091,  2.7221, -0.0818, -0.2221],\n","        [ 1.2929,  1.5228, -0.7561, -1.7425],\n","        [-1.6308, -0.1546, -0.0107,  0.3328]])\n"],"name":"stdout"}]},{"metadata":{"id":"xVJ0te-v2y1I","colab_type":"code","outputId":"a41379cc-22ea-4d99-ffa7-59d66652927c","executionInfo":{"status":"ok","timestamp":1551862946246,"user_tz":-180,"elapsed":960,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":182}},"cell_type":"code","source":["x=torch.ones(2,2,requires_grad=True)\n","print(x)\n","y=x+2\n","print(y)\n","print(y.grad_fn)\n","z=y*y*3\n","out=z.mean()\n","print(z,out)\n","out.backward()\n","print(x.grad)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["tensor([[1., 1.],\n","        [1., 1.]], requires_grad=True)\n","tensor([[3., 3.],\n","        [3., 3.]], grad_fn=<AddBackward0>)\n","<AddBackward0 object at 0x7fbfd41bb9e8>\n","tensor([[27., 27.],\n","        [27., 27.]], grad_fn=<MulBackward0>) tensor(27., grad_fn=<MeanBackward1>)\n","tensor([[4.5000, 4.5000],\n","        [4.5000, 4.5000]])\n"],"name":"stdout"}]},{"metadata":{"id":"_1WGO8JPPYIo","colab_type":"code","outputId":"65292855-17d9-4dc9-897f-e5bca9a5274f","executionInfo":{"status":"ok","timestamp":1551888317365,"user_tz":-180,"elapsed":499,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":164}},"cell_type":"code","source":["x=torch.zeros(2,2,requires_grad=True)\n","print(x)\n","y=x+2\n","print(y)\n","z=y*y*3\n","out=z.mean()\n","out.backward()\n","print(z,out)\n","#print(\"mean:\",out)\n","print(x.grad)"],"execution_count":0,"outputs":[{"output_type":"stream","text":["tensor([[0., 0.],\n","        [0., 0.]], requires_grad=True)\n","tensor([[2., 2.],\n","        [2., 2.]], grad_fn=<AddBackward0>)\n","tensor([[12., 12.],\n","        [12., 12.]], grad_fn=<MulBackward0>) tensor(12., grad_fn=<MeanBackward1>)\n","tensor([[3., 3.],\n","        [3., 3.]])\n"],"name":"stdout"}]},{"metadata":{"id":"1E-zBhGHx6DC","colab_type":"code","outputId":"ba0f70ff-1ebb-4592-ecff-bc85e80954e1","executionInfo":{"status":"ok","timestamp":1551888803699,"user_tz":-180,"elapsed":625,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}},"colab":{"base_uri":"https://localhost:8080/","height":35}},"cell_type":"code","source":["import numpy as np\n","np.square(3)"],"execution_count":0,"outputs":[{"output_type":"execute_result","data":{"text/plain":["9"]},"metadata":{"tags":[]},"execution_count":5}]},{"metadata":{"id":"oJbcmsfRx-Ks","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":240},"outputId":"fbebae9a-dbff-4e25-88ce-f0b2f7c2355d","executionInfo":{"status":"ok","timestamp":1551945902933,"user_tz":-180,"elapsed":10666,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["import torch\n","import torchvision\n","import torchvision.transforms as transforms\n","\n","########################################################################\n","# The output of torchvision datasets are PILImage images of range [0, 1].\n","# We transform them to Tensors of normalized range [-1, 1].\n","\n","transform = transforms.Compose(\n","    [transforms.ToTensor(),\n","     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])\n","\n","trainset = torchvision.datasets.CIFAR10(root='./data', train=True,\n","                                        download=True, transform=transform)\n","trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,\n","                                          shuffle=True, num_workers=2)\n","\n","testset = torchvision.datasets.CIFAR10(root='./data', train=False,\n","                                       download=True, transform=transform)\n","testloader = torch.utils.data.DataLoader(testset, batch_size=4,\n","                                         shuffle=False, num_workers=2)\n","\n","classes = ('plane', 'car', 'bird', 'cat',\n","           'deer', 'dog', 'frog', 'horse', 'ship', 'truck')\n","\n","########################################################################\n","# Let us show some of the training images, for fun.\n","\n","import matplotlib.pyplot as plt\n","import numpy as np\n","\n","# functions to show an image\n","\n","\n","def imshow(img):\n","    img = img / 2 + 0.5     # unnormalize\n","    npimg = img.numpy()\n","    plt.imshow(np.transpose(npimg, (1, 2, 0)))\n","    plt.show()\n","\n","\n","# get some random training images\n","dataiter = iter(trainloader)\n","images, labels = dataiter.next()\n","\n","# show images\n","imshow(torchvision.utils.make_grid(images))\n","# print labels\n","print(' '.join('%5s' % classes[labels[j]] for j in range(4)))"],"execution_count":1,"outputs":[{"output_type":"stream","text":["  0%|          | 0/170498071 [00:00<?, ?it/s]"],"name":"stderr"},{"output_type":"stream","text":["Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/cifar-10-python.tar.gz\n"],"name":"stdout"},{"output_type":"stream","text":["170500096it [00:04, 36662727.70it/s]                               \n"],"name":"stderr"},{"output_type":"stream","text":["Files already downloaded and verified\n"],"name":"stdout"},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 576x396 with 1 Axes>"]},"metadata":{"tags":[]}},{"output_type":"stream","text":["plane plane   cat   car\n"],"name":"stdout"}]},{"metadata":{"id":"QiOITK9ovvn0","colab_type":"code","colab":{}},"cell_type":"code","source":["import torch.nn as nn\n","import torch.nn.functional as F\n","\n","\n","class Net(nn.Module):\n","    def __init__(self):\n","        super(Net, self).__init__()\n","        self.conv1 = nn.Conv2d(3, 6, 5)\n","        self.pool = nn.MaxPool2d(2, 2)\n","        self.conv2 = nn.Conv2d(6, 16, 5)\n","        self.fc1 = nn.Linear(16 * 5 * 5, 120)\n","        self.fc2 = nn.Linear(120, 84)\n","        self.fc3 = nn.Linear(84, 10)\n","\n","    def forward(self, x):\n","        x = self.pool(F.relu(self.conv1(x)))\n","        x = self.pool(F.relu(self.conv2(x)))\n","        x = x.view(-1, 16 * 5 * 5)\n","        x = F.relu(self.fc1(x))\n","        x = F.relu(self.fc2(x))\n","        x = self.fc3(x)\n","        return x\n","\n","\n","net = Net()"],"execution_count":0,"outputs":[]},{"metadata":{"id":"9-bJcL9mMEN6","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":256},"outputId":"fd8818f2-04df-4f4f-8703-69c41cc9f298","executionInfo":{"status":"ok","timestamp":1551946166653,"user_tz":-180,"elapsed":166421,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["import torch.optim as optim\n","\n","criterion = nn.CrossEntropyLoss()\n","optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)\n","\n","for epoch in range(2):  # loop over the dataset multiple times\n","\n","    running_loss = 0.0\n","    for i, data in enumerate(trainloader, 0):\n","        # get the inputs\n","        inputs, labels = data\n","\n","        # zero the parameter gradients\n","        optimizer.zero_grad()\n","\n","        # forward + backward + optimize\n","        outputs = net(inputs)\n","        loss = criterion(outputs, labels)\n","        loss.backward()\n","        optimizer.step()\n","\n","        # print statistics\n","        running_loss += loss.item()\n","        if i % 2000 == 1999:    # print every 2000 mini-batches\n","            print('[%d, %5d] loss: %.3f' %\n","                  (epoch + 1, i + 1, running_loss / 2000))\n","            running_loss = 0.0\n","\n","print('Finished Training')"],"execution_count":4,"outputs":[{"output_type":"stream","text":["[1,  2000] loss: 2.211\n","[1,  4000] loss: 1.846\n","[1,  6000] loss: 1.680\n","[1,  8000] loss: 1.573\n","[1, 10000] loss: 1.523\n","[1, 12000] loss: 1.473\n","[2,  2000] loss: 1.390\n","[2,  4000] loss: 1.391\n","[2,  6000] loss: 1.337\n","[2,  8000] loss: 1.303\n","[2, 10000] loss: 1.285\n","[2, 12000] loss: 1.291\n","Finished Training\n"],"name":"stdout"}]},{"metadata":{"id":"yOFPvWQ-M7Ng","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":185},"outputId":"a576fd37-4cf3-4c82-8cc0-3a34b39eb7fe","executionInfo":{"status":"ok","timestamp":1551946255377,"user_tz":-180,"elapsed":1761,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["dataiter = iter(testloader)\n","images, labels = dataiter.next()\n","\n","# print images\n","imshow(torchvision.utils.make_grid(images))\n","print('GroundTruth: ', ' '.join('%5s' % classes[labels[j]] for j in range(4)))"],"execution_count":5,"outputs":[{"output_type":"display_data","data":{"image/png":"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\np3/6p3TLLbfQ8uXLT7vnf+yxx+jb3/42ua5Ln/nMZ2jJkiWnVR/k83m69dZbaXR0lKrVKn3qU5+i\njo4OWr16NRERLVmyhL785S9PbyPfJGzfvp1uueUW+su//Eu6+eab6eDBg5OO/WOPPUbf/e53ybZt\n+tCHPkQf/OAHp7vpJw2T9cHtt99OtVqNXNele+65hzo6Ok7pPpgUYQOwfv368G//9m/DMAzDHTt2\nhB/60Icacdtpx7p168KPfexjYRiG4dDQUHjVVVeFt912W/j444+HYRiGX//618Pvf//709nEhuC+\n++4LP/CBD4Q//OEPT7vnHxoaCq+77rpwfHw87O3tDe+8887Trg8eeeSR8N577w3DMAwPHToUvvOd\n7wxvvvnmcNOmTWEYhuHnPve58Omnn57OJr4pyOfz4c033xzeeeed4SOPPBKGYTjp2Ofz+fC6664L\nx8bGwmKxGN5www3h8PDwdDb9pGGyPli1alX485//PAzDMPze974X3nXXXad0H9RDQ2jndevW0bXX\nHs7buHDhQhodHaWJiYlG3Hpacckll9A3vvENIiLK5XJULBZp/fr1dM011xAR0YoVK2jdunXT2cQ3\nHTt37qQdO3bQ1VdfTUR02j3/unXraPny5ZTJZKizs5O+8pWvnHZ90NLSQiMjI0RENDY2Rs3NzdTT\n0xOxX6dqH8RiMfrWt75FnZ2cL3aysd+0aRMtW7aMstksJRIJuuiii2jjxo3T1eyTisn64Etf+hK9\n853vJCKeG6dyH9RDQw7fgYEBamnhJO2tra3U39/fiFtPKxzHoVQqRUREa9eupSuvvJKKxWJEMba1\ntZ3y/XDXXXfRbbfdFv1/uj3//v37qVQq0Sc+8QlauXIlrVu37rTrgxtuuIEOHDhAf/Inf0I333wz\nrVq1inK5XPT+qdoHrutSIpEQr0029gMDA9Ta2hp95lTaHyfrg1QqRY7jkO/79G//9m/0nve855Tu\ng3pomM0XEZ5mipZPPfUUrV27lh566CG67rrrotdP9X748Y9/TBdccAHNmTNn0vdP9ec/ipGREfqX\nf/kXOnDgAH30ox8Vz3069MFPfvIT6u7upu985zu0detW+tSnPkXZbDZ6/3Tog8lQ77lPh/7wfZ9W\nrVpFb3/722n58uX005/+VLx/OvRBQw7fzs5OGhgYiP7v6+ujjo6ORtx62vHMM8/QAw88QN/+9rcp\nm81SKpWiUqlEiUSCent7BR1zquHpp5+mffv20dNPP02HDh2iWCx2Wj0/0eFfNxdeeCG5rktz586l\ndDpNjuOcVn2wceNGuvzyy4mI6KyzzqJyuUy1Wi16/3Tog6OYbP5Ptj9ecMEF09jKNx+33347zZs3\njz796U8T0eRnxKneBw2hnS+77DJ64okniIho8+bN1NnZSZlMphG3nlaMj4/T3XffTQ8++CA1NzcT\nEdGll14a9cWTTz5JV1xxxXQ28U3FP/3TP9EPf/hD+sEPfkAf/OAH6ZZbbjmtnp+I6PLLL6dnn32W\ngiCg4eFhKhQKp10fzJs3jzZt2kRERD09PZROp2nhwoW0YcMGIjo9+uAoJhv7888/n/7whz/Q2NgY\n5fN52rhxI1188cXT3NI3D4899hh5nkef+cxnotdOtz4gamBWo3vvvZc2bNhAlmXRl770JTrrrLMa\ncdtpxZo1a+ib3/wmzZ8/P3rta1/7Gt15551ULpepu7ub/vEf/5E8z5vGVjYG3/zmN2nWrFl0+eWX\n06233npaPf+jjz5Ka9euJSKiT37yk7Rs2bLTqg/y+TzdcccdNDg4SLVajT772c9SR0cHffGLX6Qg\nCOj888+n22+/fbqbedLx8ssv01133UU9PT3kui51dXXRvffeS7fddttrxv4Xv/gFfec73yHLsujm\nm2+m9773vdPd/JOCyfpgcHCQ4vF49ANs4cKFtHr16lO2D+pBUwoqFAqFQtFgqMKVQqFQKBQNhh6+\nCoVCoVA0GHr4KhQKhULRYOjhq1AoFApFg6GHr0KhUCgUDYYevgqFQqFQNBh6+CoUCoVC0WDo4atQ\nKBQKRYPx/wPZqxIa6PpY/wAAAABJRU5ErkJggg==\n","text/plain":["<Figure size 576x396 with 1 Axes>"]},"metadata":{"tags":[]}},{"output_type":"stream","text":["GroundTruth:    cat  ship  ship plane\n"],"name":"stdout"}]},{"metadata":{"id":"achD24npNJs3","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":54},"outputId":"163b3581-a50a-4aaf-c9bc-f45d8ff543cd","executionInfo":{"status":"ok","timestamp":1551946325236,"user_tz":-180,"elapsed":11425,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["outputs = net(images)\n","_, predicted = torch.max(outputs, 1)\n","\n","print('Predicted: ', ' '.join('%5s' % classes[predicted[j]]\n","                              for j in range(4)))\n","\n","########################################################################\n","# The results seem pretty good.\n","#\n","# Let us look at how the network performs on the whole dataset.\n","\n","correct = 0\n","total = 0\n","with torch.no_grad():\n","    for data in testloader:\n","        images, labels = data\n","        outputs = net(images)\n","        _, predicted = torch.max(outputs.data, 1)\n","        total += labels.size(0)\n","        correct += (predicted == labels).sum().item()\n","\n","print('Accuracy of the network on the 10000 test images: %d %%' % (\n","    100 * correct / total))"],"execution_count":6,"outputs":[{"output_type":"stream","text":["Predicted:   frog   car   car plane\n","Accuracy of the network on the 10000 test images: 54 %\n"],"name":"stdout"}]},{"metadata":{"id":"HJiwqmhpNg4Y","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":201},"outputId":"1935b2d5-499d-478a-bde3-f85be3050152","executionInfo":{"status":"ok","timestamp":1551946369952,"user_tz":-180,"elapsed":11190,"user":{"displayName":"Omer Sezer","photoUrl":"","userId":"08295833296445258983"}}},"cell_type":"code","source":["# Hmmm, what are the classes that performed well, and the classes that did\n","# not perform well:\n","\n","class_correct = list(0. for i in range(10))\n","class_total = list(0. for i in range(10))\n","with torch.no_grad():\n","    for data in testloader:\n","        images, labels = data\n","        outputs = net(images)\n","        _, predicted = torch.max(outputs, 1)\n","        c = (predicted == labels).squeeze()\n","        for i in range(4):\n","            label = labels[i]\n","            class_correct[label] += c[i].item()\n","            class_total[label] += 1\n","\n","\n","for i in range(10):\n","    print('Accuracy of %5s : %2d %%' % (\n","        classes[i], 100 * class_correct[i] / class_total[i]))"],"execution_count":7,"outputs":[{"output_type":"stream","text":["Accuracy of plane : 51 %\n","Accuracy of   car : 80 %\n","Accuracy of  bird : 41 %\n","Accuracy of   cat : 16 %\n","Accuracy of  deer : 41 %\n","Accuracy of   dog : 43 %\n","Accuracy of  frog : 79 %\n","Accuracy of horse : 66 %\n","Accuracy of  ship : 64 %\n","Accuracy of truck : 63 %\n"],"name":"stdout"}]}]}